/**
 * @file Bsp_GpioIIC.h
 * @author 徐松亮 (5387603@qq.com)
 * @version 1.0
 * @date 2023-09-28
 *
 * @copyright Copyright (c) {2030}  沈阳迈思医疗科技有限公司
 *
 * @brief 驱动层-->GPIO模拟IIC通用程序
 * @note (仅在h文件描述注释)
 * 	@verbatim
    1.适用芯片:
        STM      :  STM32F1  STM32F407xx
        Nordic   :  Nrf51    Nrf52
    2.移植步骤:无
    3.验证方法:无
    4.使用方法:无
    5.其他说明:无
    @endverbatim
 * @todo (仅在h文件描述待办事项)
 * @par 修改日志:
 * <table>
 * <tr><th>日期   <th>版本 <th>作者  <th>描述
 * <tr><td>2023-09-28 <td>1.0     <td>徐松亮     <td>创建初始版本
 * </table>
 */
/* 防止重复编译 (Define to prevent recursive inclusion)------------------------*/
#ifndef __BSP_GPIO_IIC_H
#define __BSP_GPIO_IIC_H
/* 通用头部文件 (General Includes)---------------------------------------------*/
#include <stdint.h>
/* 公有类型定义 (Exported types)-----------------------------------------------*/
typedef enum
{
    BSP_GPIO_IIC_E_PIN_SCL,
    BSP_GPIO_IIC_E_PIN_SDA,
} BSP_GPIO_IIC_E_PIN;

typedef struct
{
    uint8_t Delay_us;
    uint8_t (*fnp_ReadPin)(BSP_GPIO_IIC_E_PIN);
    void (*fnp_WritePin)(BSP_GPIO_IIC_E_PIN, uint8_t);
    void (*fnp_Delay_us)(uint32_t);
    void (*fnp_GpioInit)(void);
} BSP_GPIO_IIC_T_INPUT;
typedef struct
{
    void (*fnp_IIC_Start)(void *);
    void (*fnp_IIC_Stop)(void *);
    void (*fnp_IIC_SendByte)(void *, uint8_t);
    uint8_t (*fnp_IIC_ReadByte)(void *);
    uint8_t (*fnp_IIC_WaitAck)(void *);
    void (*fnp_IIC_Ack)(void *);
    void (*fnp_IIC_NAck)(void *);
    //
    uint8_t (*fnp_CheckDevice)(void *, uint8_t _uc_addr);
} BSP_GPIO_IIC_T_OUTPUT;
typedef struct
{

} BSP_GPIO_IIC_T_TRANSPLANT;
typedef struct
{
} BSP_GPIO_IIC_T_PRIVATE;
typedef struct
{
    BSP_GPIO_IIC_T_INPUT t_Input;
    BSP_GPIO_IIC_T_OUTPUT t_Output;
    BSP_GPIO_IIC_T_TRANSPLANT t_Transplant;
    BSP_GPIO_IIC_T_PRIVATE t_Private;
} BSP_GPIO_IIC_T_INTERFACE;
/* 移植性宏定义 (Transplant define)--------------------------------------------*/
/* 应用性宏定义 (Application define)-------------------------------------------*/
#define BSP_GPIO_IIC_WR 0
#define BSP_GPIO_IIC_RD 1
/* 公有常量声明 (Exported constants)-------------------------------------------*/
/* 公有变量声明 (Exported variables)-------------------------------------------*/
/* 公有函数声明 (Exported functions)-------------------------------------------*/
void BspGpioIIC_Init(BSP_GPIO_IIC_T_INTERFACE *_tp_interface);
//
// void BspGpioIIC_Start(BSP_GPIO_IIC_T_INTERFACE *_tp_interface);
// void BspGpioIIC_Stop(BSP_GPIO_IIC_T_INTERFACE *_tp_interface);
// void BspGpioIIC_SendByte(BSP_GPIO_IIC_T_INTERFACE *_tp_interface, uint8_t _ucByte);
// uint8_t BspGpioIIC_ReadByte(BSP_GPIO_IIC_T_INTERFACE *_tp_interface);
// uint8_t BspGpioIIC_WaitAck(BSP_GPIO_IIC_T_INTERFACE *_tp_interface);
// void BspGpioIIC_Ack(BSP_GPIO_IIC_T_INTERFACE *_tp_interface);
// void BspGpioIIC_NAck(BSP_GPIO_IIC_T_INTERFACE *_tp_interface);
// uint8_t BspGpioIIC_CheckDevice(BSP_GPIO_IIC_T_INTERFACE *_tp_interface, uint8_t _Address);
//
#endif
/********************************END OF FILE***********************************/
